1、前言
很多场景会导致集群数据进行迁移、恢复,比如磁盘损坏后换盘操作、集群扩容操作、机器下电维护后再次上电等等。数据恢复的时候会一定程度的影响客户端io,我们迫切需要大概知道数据啥时候可以恢复完成,下面就描述一种计算方法。
2、计算数据恢复需要的时间
计算方式:需要恢复的总对象数 / 每秒恢复的对象数 = 需要恢复的时间
比如下面的我测试环境例子:
1 | [root@node6 ~]# ceph -s -f json-pretty|grep pgmap -A 50 |
按照计算公式来计算:
需要恢复的对象总数 = “degraded_objects” + “misplaced_objects”(这里没有misplaced_objects,也就不用加了)
当前恢复的的速度 = “recovering_objects_per_sec”(这里的恢复速度是在变动的,可以多获取几次取个平均值)
需要恢复的时间 = 9046 / 10 = 大概900s
上面是计算整个集群的,如果需要计算某个pool级别的,可以使用 ceph osd pool stats -f json-pretty 来获取pool的 degraded_objects misplaced_objects和recovering_objects_per_sec值,然后计算方式和整个集群的计算方式一样。
好了,通过上面简单的计算就可以大概推算集群恢复完成的时间了。